The loop was using 'closures->data' instead of 'iter->data', causing
only the first leisure closure to be executed and freed on each cycle.
All subsequent closures in the list were leaked.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4275>
(cherry picked from commit
28fc2fc85b34e8c8291330d4b62d5a3e1092b3d6)
for (iter = closures; iter; iter = iter->next)
{
- LeisureClosure *closure = closures->data;
+ LeisureClosure *closure = iter->data;
closure->func (closure->user_data);
if (closure->notify)